package com.bdq.interaction.domain.service;

import com.bdq.common.entity.common.PageResult;
import com.bdq.interaction.domain.model.dto.ChildCommentPageDomainDTO;
import com.bdq.interaction.domain.model.dto.InteractionDataGetDomainDTO;
import com.bdq.interaction.domain.model.dto.InteractionDataListDomainDTO;
import com.bdq.interaction.domain.model.dto.ParentCommentPageDomainDTO;
import com.bdq.interaction.domain.model.dto.req.*;

import java.util.List;

/**
 * @author malei
 * @date 2024-05-14 15:03
 */
public interface InteractionDomainService {

    /**
     * 交互数初始化
     *
     * @param reqDTO
     * @return
     */
    Boolean interactionNumInit(InteractionNumInitReqDTO reqDTO);

    /**
     * 投票初始化
     *
     * @param reqDTO
     * @return
     */
    Boolean voteInit(VoteInitReqDTO reqDTO);

    /**
     * 浏览
     *
     * @param reqDTO
     * @return
     */
    Boolean view(ViewReqDTO reqDTO);

    /**
     * 点赞
     *
     * @param reqDTO
     * @return
     */
    Boolean like(LikeReqDTO reqDTO);

    /**
     * 取消点赞
     *
     * @param reqDTO
     * @return
     */
    Boolean cancelLike(LikeCancelReqDTO reqDTO);

    /**
     * 收藏
     *
     * @param reqDTO
     * @return
     */
    Boolean collect(CollectReqDTO reqDTO);

    /**
     * 取消收藏
     *
     * @param reqDTO
     * @return
     */
    Boolean cancelCollect(CollectCancelReqDTO reqDTO);

    /**
     * 报名
     *
     * @param reqDTO
     * @return
     */
    Boolean signUp(SignUpReqDTO reqDTO);

    /**
     * 投票
     *
     * @param reqDTO
     * @return
     */
    Boolean vote(VoteReqDTO reqDTO);

    /**
     * 评论
     *
     * @param reqDTO
     * @return
     */
    Boolean comment(CommentReqDTO reqDTO);

    /**
     * 获取交互数据
     *
     * @param reqDTO
     * @return
     */
    InteractionDataGetDomainDTO getData(InteractionDataGetReqDTO reqDTO);

    /**
     * 列表查询交互数据
     *
     *
     * @param userId
     * @param contentIds
     * @return
     */
    List<InteractionDataListDomainDTO> listData(Long userId, List<Long> contentIds);

    /**
     * 分页查询父评论
     *
     * @param reqDTO
     * @return
     */
    PageResult<ParentCommentPageDomainDTO> pageParentComment(ParentCommentPageReqDTO reqDTO);

    /**
     * 分页查询子评论
     *
     * @param reqDTO
     * @return
     */
    PageResult<ChildCommentPageDomainDTO> pageChildComment(ChildCommentPageReqDTO reqDTO);
}
